/*
 * @lc app=leetcode.cn id=88 lang=javascript
 *
 * [88] 合并两个有序数组
 */

// @lc code=start
/**
 * @param {number[]} nums1
 * @param {number} m
 * @param {number[]} nums2
 * @param {number} n
 * @return {void} Do not return anything, modify nums1 in-place instead.
 */
var merge = function(nums1, m, nums2, n) {
    let p1 = m - 1
    let p2 = n - 1
    let sum = m + n - 1
    while(p1 >= 0 || p2 >= 0) {
        if (p1 < 0) {
            nums1[sum] = nums2[p2]
            p2--
        } else if (p2 < 0) {
            nums1[sum] = nums1[p1]
            p1--
        } else if (nums1[p1] > nums2[p2]) {
            nums1[sum] = nums1[p1]
            p1--
        } else if (nums2[p2] >= nums1[p1]) {
            nums1[sum] = nums2[p2]
            p2--
        }
        sum--
    }
    // let arr = []
    // for (let index = 0; index < sum; index++) {
    //     if (nums1[0] === undefined) {
    //         arr.push(nums2[0])
    //         nums2.shift()
    //         continue
    //     }
    //     if (nums2[0] === undefined) {
    //         arr.push(nums1[0])
    //         nums1.shift()
    //         continue
    //     }
    //     if (nums1[0] <= nums2[0]) {
    //         arr.push(nums1[0])
    //         nums1.shift()
    //         continue
    //     } else {
    //         arr.push(nums2[0])
    //         nums2.shift()
    //         continue
    //     }
    // }
    // return arr
};
// @lc code=end

/* 
    逆向双指针
    最开始以为只要返回正确的数组即可，后来发现原来是对num1操作
    从前往后对num1操作会对后续num1要取到的值有影响
    故使用逆向的指针
*/

